//package com.slt.jvm.book.chapter3;
//
//import org.junit.Test;
///**
// * VM参数：+XX:UseSerialGC
// *
// * -verbose:gc //在控制台输出GC情况
// * -XX:+PrintGCDetails  //在控制台输出详细的GC情况
// * -Xloggc: filepath  //将GC日志输出到指定文件中
// * @author zzm
// */
//public class TestSerialGCAllocation {
//
//    private static final int _1MB = 1024 * 1024;
//
//    /**
//     * VM参数：-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
//     */
//    @Test
//    public  void testAllocation() {
//        byte[] allocation1, allocation2, allocation3, allocation4;
//        allocation1 = new byte[2 * _1MB];
//        allocation2 = new byte[2 * _1MB];
//        allocation3 = new byte[2 * _1MB];
//        allocation4 = new byte[4 * _1MB];  // 出现一次Minor GC
//    }
//
//    /**
//     * VM参数：-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold=3145728
//     *
//     */
//    @Test
//    public  void testPretenureSizeThreshold() {
//        byte[] allocation;
//        allocation = new byte[4 * _1MB];  //直接分配在老年代中
//    }
//
//    /**
//     * VM参数：-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=1
//     * -XX:+PrintTenuringDistribution
//     */
//    public static void testTenuringThreshold() {
//        byte[] allocation1, allocation2, allocation3;
//        allocation1 = new byte[_1MB / 4];  // 什么时候进入老年代决定于XX:MaxTenuringThreshold设置
//        allocation2 = new byte[4 * _1MB];
//        allocation3 = new byte[4 * _1MB];
//        allocation3 = null;
//        allocation3 = new byte[4 * _1MB];
//    }
//
//    /**
//     * VM参数：-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15
//     * -XX:+PrintTenuringDistribution
//     */
//    public static void testTenuringThreshold2() {
//        byte[] allocation1, allocation2, allocation3, allocation4;
//        allocation1 = new byte[_1MB / 4];   // allocation1+allocation2大于survivo空间一半
//        allocation2 = new byte[_1MB / 4];
//        allocation3 = new byte[4 * _1MB];
//        allocation4 = new byte[4 * _1MB];
//        allocation4 = null;
//        allocation4 = new byte[4 * _1MB];
//    }
//
//    /**
//     * VM参数：-Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:-HandlePromotionFailure
//     */
//    public static void testHandlePromotion() {
//        byte[] allocation1, allocation2, allocation3, allocation4, allocation5, allocation6, allocation7;
//        allocation1 = new byte[2 * _1MB];
//        allocation2 = new byte[2 * _1MB];
//        allocation3 = new byte[2 * _1MB];
//        allocation1 = null;
//        allocation4 = new byte[2 * _1MB];
//        allocation5 = new byte[2 * _1MB];
//        allocation6 = new byte[2 * _1MB];
//        allocation4 = null;
//        allocation5 = null;
//        allocation6 = null;
//        allocation7 = new byte[2 * _1MB];
//    }
//
//
//
//}
